package com.example.tse.rbhttpservice.service.account;

import com.example.tse.rbhttpservice.service.account.model.AccountAuthLoginRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountAuthLoginResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountBindMobileRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountBindMobileResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountForgetRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountForgetResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountIsNewUserRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountIsNewUserResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountLoginRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountLoginResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountLogoutRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountLogoutResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountRegisterRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountRegisterResponse;
import com.example.tse.rbhttpservice.service.account.model.AccountSendVcodeRequest;
import com.example.tse.rbhttpservice.service.account.model.AccountSendVcodeResponse;
import  com.example.tse.rbhttpservice.service.RemoteServiceListenerT;

/**
*
* @author wliu
*  edit   tse
*/
public interface AccountService {
/**
* 验证第三方登录key是否已经绑定会员
* @param request
* @param listener
* @return AccountAuthLoginResponse
*/
void authLogin(AccountAuthLoginRequest request, RemoteServiceListenerT
        <AccountAuthLoginResponse> listener);

/**
* 绑定手机号，用于强制新绑定手机号码
* @param request
* @param listener
* @return AccountBindMobileResponse
*/
void bindMobile(AccountBindMobileRequest request, RemoteServiceListenerT
        <AccountBindMobileResponse> listener);

/**
* 用户忘记密码找回
* @param request
* @param listener
* @return AccountForgetResponse
*/
void forget(AccountForgetRequest request, RemoteServiceListenerT
        <AccountForgetResponse> listener);

/**
* 判断是否是新用户
* @param request
* @param listener
* @return AccountIsNewUserResponse
*/
void isNewUser(AccountIsNewUserRequest request, RemoteServiceListenerT
        <AccountIsNewUserResponse> listener);

/**
* 用户登陆
* @param request
* @param listener
* @return AccountLoginResponse
*/
void login(AccountLoginRequest request, RemoteServiceListenerT
        <AccountLoginResponse> listener);

/**
* 退出登录
* @param request
* @param listener
* @return AccountLogoutResponse
*/
void logout(AccountLogoutRequest request, RemoteServiceListenerT
        <AccountLogoutResponse> listener);

/**
* 用户注册
* @param request
* @param listener
* @return AccountRegisterResponse
*/
void register(AccountRegisterRequest request, RemoteServiceListenerT
        <AccountRegisterResponse> listener);

/**
* 发送验证码（注册、找回密码用）
* @param request
* @param listener
* @return AccountSendVcodeResponse
*/
void sendVcode(AccountSendVcodeRequest request, RemoteServiceListenerT
        <AccountSendVcodeResponse> listener);

    }
